home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload Trio 2
/
Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO
/
dir42
/
fpw2xl.zip
/
NEWGRAPH.PRG
next >
Wrap
Text File
|
1993-06-23
|
9KB
|
329 lines
PROCEDURE newgraph
PARAMETER lv_sid
*
*
*
CLOSE DATA
USE patients ORDER name
*
CLEAR
*
SELE patients
IF TYPE('lv_sid') <> "N"
@ 5,5 SAY "Class (P|C|E):" GET m.class DEFAULT "P"
READ
*
SET TALK OFF
COUNT FOR CLASS=m.class TO lv_records
SET TALK ON
DIMENSION la_pat (lv_records,3)
COPY TO ARRAY la_pat FIELDS name,sid,scandate FOR CLASS=m.class
for i = 1 to lv_records
la_pat(i,1)=la_pat(i,1)+dtoc(la_pat(i,3))
endfor
lv_patidx=0
DEFI WIND pickpat AT 7,5 SIZE 11,60 font "Courier New",10
ACTI WIND pickpat
@ 0,0 GET lv_patidx FROM la_pat FUNCTION "&T"
READ
RELE WIND pickpat
*
@ 7,5 SAY la_pat(lv_patidx,1)
lv_sid=la_pat(lv_patidx,2)
RELE la_pat,lv_patidx, lv_records
ENDIF
*
LOCATE FOR sid=lv_sid
ls_header = ALLTRIM(name)
ls_header = IIF(EMPTY(dob), ls_header,ls_header+" dob "+DTOC(dob))
ls_header = IIF(EMPTY(scandate),ls_header,ls_header+" on "+DTOC(scandate))
ls_header = IIF(EMPTY(op), ls_header,ls_header+PROPER(op)+"-op.")
USE
*
*
USE volumes
SET TALK OFF
CALCULATE MAX(pos) TO lv_lastpos
SET TALK ON
*
lv_slices = (lv_lastpos/1.5)+1
RELE lv_lastpos
DIMENSION la_volumes (lv_slices,4)
LOCATE FOR volumes.sid=lv_sid
IF NOT FOUND()
? "Hopelessly buggered data"
RETURN
ENDIF
*
lv_posmm = 0
FOR i = 1 TO lv_slices
IF FOUND()
IF volumes.pos=lv_posmm
la_volumes(i,1)=IIF(volumes.lhvol>0,ALLTRIM(STR(lhvol,8,2)),'')
la_volumes(i,2)=IIF(volumes.rhvol>0,ALLTRIM(STR(rhvol,8,2)),'')
la_volumes(i,3)=IIF(volumes.lavol>0,ALLTRIM(STR(lavol,8,2)),'')
la_volumes(i,4)=IIF(volumes.ravol>0,ALLTRIM(STR(ravol,8,2)),'')
ENDIF
CONTINUE
ELSE
la_volumes(i,1)=''
la_volumes(i,2)=''
la_volumes(i,3)=''
la_volumes(i,4)=''
ENDIF
*
lv_posmm = lv_posmm +1.5
ENDFOR
*
* now data is in array la_volumes and ls_header
*
CLOSE DATA
*
* Now the really fancy stuff...
*
xlsystem = -1
xlsheet1 = -1
*
=ddesetoption('SAFETY',.F.)
=ddesetoption('TIMEOUT',2000)
*
xlsystem = DDEINITIATE('Excel','System')
IF xlsystem <0
! /n2 C:\excel\excel
tries = 10
DO WHILE (tries >0) AND (xlsystem <0)
WAIT WINDOW "Waiting for"+CHR(13)+"EXCEL to initialise" TIMEOUT 2
tries = tries-1
xlsystem = DDEINITIATE('Excel','System')
ENDDO
IF tries =0
DO abend WITH "Excel not responding"
ENDIF
ENDIF
xlsheet1 = DDEINITIATE('Excel','Sheet1')
tries = 10
DO WHILE (tries >0) AND (xlsheet1 <0)
WAIT WINDOW "Waiting for"+CHR(13)+"EXCEL - Sheet1" TIMEOUT 2
tries = tries-1
xlsheet1 = DDEINITIATE('Excel','Sheet1')
ENDDO
IF tries =0
DO abend WITH "Sheet1 not responding"
ENDIF
*
* Now we have the DDE channels open
*
xlrow=1
lv_posmm=0
FOR xlcol =2 TO lv_slices+1
=rcpoke(ALLTRIM(STR(lv_posmm,8,2)))
lv_posmm = lv_posmm +1.5
ENDFOR
*
xlrow=2
xlcol=1
=rcpoke('Left Hippocampal')
xlrow=3
xlcol=1
=rcpoke('Right Hippocampal')
xlrow=4
xlcol=1
=rcpoke('Left Amygdala')
xlrow=5
xlcol=1
=rcpoke('Right Amygdala')
*
FOR xlcol =2 TO lv_slices+1
xlrow =2
=rcpoke(la_volumes(xlcol-1,1))
xlrow =3
=rcpoke(la_volumes(xlcol-1,2))
xlrow =4
=rcpoke(la_volumes(xlcol-1,3))
xlrow =5
=rcpoke(la_volumes(xlcol-1,4))
ENDFOR
*
RELE la_volumes,lv_slices,lv_posmm
RELE xlrow,xlcol
*
* data complete, now graph it!
*
IF NOT DDEEXECUTE(xlsystem,'[select("R1:R5")]')
DO abend WITH '[select(!R1:R5)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[new(2)]')
DO abend WITH "new(2)"
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[page.setup("","",.5,.5,.5,.5,3,TRUE,TRUE,2,9,100)]')
DO abend WITH '[page.setup("","",.5,.5,.5,.5,3,TRUE,TRUE,2,9,100)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[legend(TRUE)]')
DO abend WITH '[legend(TRUE)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[select("Legend")]')
DO abend WITH '[select("Legend")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,,,,FALSE,1,,,,FALSE)]')
DO abend WITH '[patterns(1,,,,FALSE,1,,,,FALSE)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[format.legend(2)]')
DO abend WITH '[format.legend(2)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]')
DO abend WITH '[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[attach.text(1)]')
DO abend WITH '[attach.text(1)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[formula("=""'+ls_header+'""")]')
DO abend WITH '[formula("=""'+ls_header+'""")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[format.font(0,1,FALSE,"Arial",14,TRUE,FALSE,FALSE,FALSE)]')
DO abend WITH '[format.font(0,1,FALSE,"Arial",14,TRUE,FALSE,FALSE,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[gallery.line(2,TRUE)]')
DO abend WITH '[gallery.line(2,TRUE)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[gridlines(FALSE,FALSE,FALSE,FALSE)]')
DO abend WITH '[gridlines(FALSE,FALSE,FALSE,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[select("Axis 1")]')
DO abend WITH '[select("Axis 1")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,1,1,1,4,3,4)]')
DO abend WITH '[patterns(1,1,1,1,4,3,4)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[SCALE(0,350,50,10,TRUE,FALSE,FALSE,FALSE)]')
DO abend WITH '[SCALE(0,350,50,10,TRUE,FALSE,FALSE,FALSE)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]')
DO abend WITH '[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[select("Axis 2")]')
DO abend WITH '[select("Axis 2")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,,,,4,1,4)]')
DO abend WITH '[patterns(1,,,,4,1,4)]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]')
DO abend WITH '[format.font(0,1,FALSE,"Arial",10,FALSE,FALSE,FALSE,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[select("S1")]')
DO abend WITH '[select("S1")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,1,1,1,1,1,1,4,FALSE)]')
DO abend WITH '[patterns(1,1,1,1,1,1,1,4,FALSE)]'
ENDIF
*
IF NOT DDEEXECUTE(xlsystem,'[select("S2")]')
DO abend WITH '[select("S2")]'
ENDIF
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,1,1,1,1,1,1,3,FALSE)]')
DO abend WITH '[patterns(1,1,1,1,1,1,1,3,FALSE)]'
ENDIF
*
* We don't care if S3 can't be found
IF DDEEXECUTE(xlsystem,'[select("S3")]')
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,1,1,1,1,1,1,6,FALSE)]')
DO abend WITH '[patterns(1,1,1,1,1,1,1,6,FALSE)]'
ENDIF
ENDIF
*
* we don't care if S4 can't be found
IF DDEEXECUTE(xlsystem,'[select("S4")]')
IF NOT DDEEXECUTE(xlsystem,'[patterns(1,1,1,1,1,1,1,5,FALSE)]')
DO abend WITH '[patterns(1,1,1,1,1,1,1,5,FALSE)]'
ENDIF
ENDIF
*
* printing can take a while - allow 30 seconds!
*
=ddesetoption('TIMEOUT',30000)
IF NOT DDEEXECUTE(xlsystem,'[print(1,,,1,FALSE,FALSE,1)]')
DO abend WITH '[print(1,,,1,FALSE,FALSE,1)]'
ENDIF
*
* reset to 2 seconds
*
=ddesetoption('TIMEOUT',2000)
IF NOT DDEEXECUTE(xlsystem,'[close(FALSE)]')
DO abend WITH '[close(FALSE)] - Graph'
ENDIF
*
* Close DDE conversation
*
IF NOT DDETERMINATE(xlsheet1)
DO abend WITH "Could not Terminate Sheet1"
ENDIF
xlsheet1 = -1
*
*
IF NOT DDEEXECUTE(xlsystem,'[close(FALSE)]')
DO abend WITH '[close(FALSE)] - Sheet'
ENDIF
*
* Close Excel
*
=DDEEXECUTE(xlsystem,'[Quit]')
*
* We can ignore the error from this, because we shut down Excel with the
* previous command...
*
=DDETERMINATE(xlsystem)
xlsystem = -1
*
*
*
DO abend
RETURN
FUNCTION rc
PARAMETERS arow,acol
RETURN 'R'+ALLTRIM(STR(arow))+'C'+ALLTRIM(STR(acol))
FUNCTION mmmyy
PARAMETER monthindex
yi=0
mi=monthindex%12
yi=INT(monthindex/12)
yi=IIF(mi=0,yi-1,yi)
mi=IIF(mi=0,12,mi)
RETURN LEFT(CMONTH(CTOD('1/'+STR(mi)+'/90')),3)+'-'+ALLTRIM(STR(yi+90))
PROCEDURE rcpoke
PARAMETERS astring
IF NOT DDEPOKE(xlsheet1,rc(xlrow,xlcol),astring)
DO abend WITH "Poke @"+rc(xlrow,xlcol)+" "+astring
ENDIF
RETURN
PROCEDURE abend
PARAMETERS amessage
IF TYPE('amessage') = 'C'
WAIT WINDOW "DDE Error"+CHR(13)+amessage
ENDIF
CLOSE DATA
CLEAR
IF TYPE('amessage') = 'C'
IF xlsheet1 # -1
=DDEEXECUTE(xlsystem,'[close(FALSE)]')
=DDETERMINATE(xlsheet1)
ENDIF
IF xlsystem # -1
=DDEEXECUTE(xlsystem,'[close(FALSE)]')
=DDEEXECUTE(xlsystem,'[Quit]')
=DDETERMINATE(xlsystem)
ENDIF
RETURN TO MASTER
ENDIF
RETURN